import calendar
# calendar.setfirstweekday(calendar.WEDNESDAY)
# 返回当前设置的每星期的第一天的数值，默认为星期一
# print(calendar.firstweekday)
# 如果 year 是闰年则返回 True，否则返回 False
# print(calendar.isleap(2020))
# 返回在范围 y1 至 y2 （包含 y1 和 y2 ）之间的闰年的年数，其中 y1 和 y2 是年份
# print(calendar.leapdays(1945,2019))
# 返回指定年、月份第一天是星期几(前一天)和这个月的天数
# print(calendar.monthrange(2020, 4))
# 返回一周中的某一天 （ 0 ~ 6 代表周一至周日） 前一天
# print(calendar.weekday(2020,3,27))
# 返回表示一个月的日历的矩阵，每一行代表一周，此月份外的日子由零表示，每周默认从周一开始，可使用 setfirstweekday() 改变默认值。
# print(calendar.monthcalendar(2020, 3))
# 打印由 month() 返回的一个月的日历，每日宽度间隔为 w 字符，l 是每星期的行数。
# print(calendar.prmonth(2020,3))
# 打印由 calendar() 返回的整年的日历
# print(calendar.prcal(2020))
# 在当前的语言环境下表示星期几的列表
# print(calendar.day_name[0])
# 在当前语言环境下表示星期几缩写的列表
# print(calendar.day_abbr[0])
# 在当前语言环境下表示一年中月份的列表，一月的月号为 1，它的长度为 13 且 month_name[0] 是空字符串
# print(calendar.month_name[3])
# 在当前语言环境下表示月份简写的列表
# print(calendar.month_abbr[1])


from calendar import Calendar

c = Calendar()
# 返回一个迭代器，迭代器的内容为一星期的数字
# print(list(c.iterweekdays()))
# 返回一个迭代器，迭代器的内容为 year 年 month 月（1-12）的日期
# print(list(c.itermonthdates(2020, 3)))
# 返回一个迭代器，迭代器的内容与 itermonthdates() 类似为 year 年 month 月的日期，但不受 datetime.date 范围的限制，迭代器中的元素为一个由日期和代表星期几的数字组成的的元组
# print(list(c.itermonthdays2(2020, 3)))
# 返回一个迭代器，迭代器的内容与 itermonthdates() 类似为 year 年 month 月的日期，不受 datetime.date 范围的限制，迭代器的元素为一个由年、月、日组成的元组
# print(list(c.itermonthdays3(2020, 3)))

from calendar import TextCalendar
tc = TextCalendar()
# 返回一个多行字符串来表示指定年月的日历，w 为日期的宽度，始终保持日期居中，l 指定了每星期占用的行数；以上这些还依赖于构造器或者 setfirstweekday() 方法指定的周的第一天是哪一天。
# print(tc.formatmonth(2020, 3))
# 与 formatmonth() 方法一样，返回一个月的日历
# print(tc.prmonth(2019,10))
# 返回一个多行字符串，这个字符串为一个 m 列日历，可选参数 w、l、c 分别表示日期列数、周的行数、月之间的间隔；以上这些还依赖于构造器或者 setfirstweekday() 指定哪一天为一周的第一天。
# print(tc.formatyear(2020))
# 与 formatyear() 方法一样，返回一整年的日历
# print(tc.pryear(2019))

from calendar import HTMLCalendar
hc = HTMLCalendar()
# 返回一个 HTML 表格作为指定年月的日历，withyear 为 True，则年份将会包含在表头，否则只显示月份
# print(hc.formatmonth(2019,10))
# 返回一个 HTML 表格作为指定年份的日历，width 用于规定每一行显示月份的数量
# print(hc.formatyear(2020))
# 返回一个完整的 HTML 页面作为指定年份的日历，width 用于规定每一行显示的月份数量，css 为层叠样式表的名字，如果不使用任何层叠样式表，可以使用 None，encoding 为输出页面的编码 (默认为系统的默认编码)
print(hc.formatyearpage(2019))